//
// Created by Deng on 2024/3/21.
//

#ifndef TCP_NET_OP_H
#define TCP_NET_OP_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#include <netinet/tcp.h>

#include <errno.h>

#include <arpa/inet.h>
#include <fcntl.h>
#include <sys/shm.h>

#define DEFAULT_PORT 8848

int op_socket(const char *protocol);

int op_bind(int _sockfd, void *addr_var);

int op_listen(int _sockfd, int queue);

int op_accept();

// for client
int op_connect(int _sockfd, void *addr_var);

struct NetNode
{
    int fd;
    struct sockaddr_in addr;
    socklen_t len;
};

int create_netnode(struct NetNode *nn, int mode, const char *_ip, const int port);

int bind_netnode(struct NetNode *nn);

int close_netnode(struct NetNode);

#endif // TCP_NET_OP_H
